package com.eq;

public class EqualsStrTest {
    public static void main(String[] args) {
        String str1 = "张三";//常量池
        String str2 = new String("张三");//堆中
        String str3 = new String("张三");//堆中
        System.out.println("是否同一人："+str1.equals(str2));//这个地方为什么相等呢，重写
        System.out.println("是否同一人："+str2.equals(str3));//这个地方为什么相等呢，重写
        //如果相等，hashcode必须相等，重写
        System.out.println("str1的hashCode为>>" + str1.hashCode());
        System.out.println("str2的hashCode为>>" + str2.hashCode());

        //intern；内存地址是否相等(面试常问)
        System.out.println("str1与str2是否相等>>" +(str1==str2));  //false
        System.out.println("str1与str2是否相等>>" +(str1==str2.intern()));  //true，intern之后变成常量池了
        
        System.out.println("str1与str3是否相等>>" +(str1==str3.intern()));  //true，intern之后变成常量池了
        System.out.println("str1与str3是否相等>>" +(str1==str3 ));  //false


    }
}
